草庐IT

Java ForkJoinPool - 队列中的任务顺序

全部标签

java - 从具有多个线程的 SQS 队列中读取

注意:这是来自here的帖子的转贴.大家好,我有一个处理单个SQS队列中的消息的进程。队列中可以有很多消息,每条消息都会导致数据库命中。因此,我想给这个队列的读者发帖。每个线程的基本代码是:publicvoidrun(){while(true){ReceiveMessageRequestrmr=newReceiveMessageRequest(queueUrl).withMaxNumberOfMessages(10).withWaitTimeSeconds(3);Listmessages=sqsClient.receiveMessage(rmr).getMessages();//pro

Java归并排序, "merge"这一步应该用队列还是数组来完成?

这不是家庭作业,我没有钱上学,所以我在高速公路上的收费站轮类工作时自学(漫长的夜晚,几乎没有顾客)我试图通过首先思考实现一个简单的“合并排序”,如果你喜欢一些实际的学习,稍微拉伸(stretch)一下我的大脑,然后然后看看解决方案在我使用的手册上:“2008-08-21|算法设计手册|Springer|StevenS.Skiena|ISBN-1848000693”。我想出了一个解决方案,它使用数组作为缓冲区来实现“合并”步骤,我将其粘贴在下面。作者使用队列所以我想知道:是否应该改用队列?一种方法与另一种方法相比有哪些优势?(显然他的方法会更好,因为他是顶级算法学家而我是初学者,但我不能

在 Java 中使用 redis 的消息队列服务

前言关于redis我们前面已经讨论过了缓存、分布式锁、分布式唯一标识、LBS服务的用法,这里我们来谈谈利用redis来实现一个消息服务。典型的消息服务是一个生产者和消费者模式的服务。一般是有生产者产生消息,将消息发送到队列中。而消息的消费者则监听消息,对消息进行处理。有很多非常优秀的消息队列服务的产品。例如RabbitMQ、RocketMQ、Kafka等。这些产品都具备非常高级的功能。可靠性、扩展性都非常的好。但是redis自身也能够很简单的实现消息队列的生产者和消费者模式。本文简单介绍一下在Java下是如何实现的。相关命令介绍参考redis官网redis和pubsub模式相关的命令如下。PU

java - 具有并行 DataProvider 和随机顺序方法的 TestNG 套件 - 如何实现?

我有一个包含许多方法的测试类,其中每个方法都受够了并行数据提供程序。我想实现方法执行的混合顺序,但我无法控制数据提供程序线程池的大小——它与测试方法的数量成倍增加。请看例子:我的测试套件定义:我的测试类:@Test(dataProvider="dp1")publicvoidtest1(TestDatatestData){}@Test(dataProvider="dp2")publicvoidtest2(TestDatatestData){}@DataProvider(name="dp1",parallel=true)publicstaticObject[][]dp1(){returnc

java - 当某些事务的顺序很重要时,我如何多线程处理队列消费者?

我有一个对对象集合进行操作的任务队列(为了举例,假设这些对象是地址簿中的条目)。一个示例任务可能是“将Joe的电话号码更新为888-555-1212”。队列中可能同时有多个“更新Joe的电话号码...”任务,但电话号码不同。在这种情况下,必须应用更新以确保最后的状态是正确的(不,为了争论,不可能在任务上加上时间戳,在地址簿条目上加上时间戳,然后扔掉过时的任务)。将Jane的更新与Joe的更新乱序应用是安全的。我想对队列进行多线程处理,但需要按人同步访问。有没有适合这种东西的方便的库?还是我只能使用Executor并在Runnable的run()方法中对“name”进行自己的同步?

java - 具有 stomp 安全性的 Spring websocket - 每个用户都可以订阅任何其他用户队列?

我创建了一个使用spring4的websockets机制的简单应用程序。我在我的应用程序中使用了一个activemq代理。在我的简单测试中,我为名为“Alejando”的用户创建了10条消息(user/alejandro/queue/greetings)当我使用“Alejando”登录并订阅该队列时:stompClient.subscribe('/user/alejandro/queue/greetings',function(greeting){showGreeting(JSON.parse(greeting.body).content);});我确实收到了为alejandro查询的

java - 如果将 NxM 乘法表按顺序排列,中间的数字是什么?

如果我有一个乘法表,例如3x5:123452468103691215我把所有这些数字按顺序排列:122334456689101215中间的数字是多少?在这种情况下,它是5。N和M总是奇数,所以只能有一个答案。有没有快速的解决方案?我正在寻找O(NlogNM)行中的内容这是某种家庭作业,但我真的迷失了这个。我提出了一些想法,但它们都有一些缺点:publicclassTable{publicstaticvoidmain(String[]ar){Scannerscanner=newScanner(System.in);intw=scanner.nextInt();inth=scanner.n

java - Gradle 运行任务在控制台中运行时接受输入,但不作为 IDEA 运行配置

我有以下Java主类,我正在尝试使用IntelliJIDEA中的Gradle插件编译和运行它:packagecom.mikidep.bookshop;importjava.io.IOException;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args)throwsIOException{Scannerin=newScanner(System.in);System.out.print("Inseriscitestoqui:");System.out.println(in.nextLine()

java - 在 while 循环中添加项目时处理队列中的项目

我有一种方法可以在while循环中监听UDP数据包。我想在数据包到达时使用不同类中的另一种方法解析数据包,并在应用程序的另一部分对每个数据包进行许多不同的解析和分析。我认为让PacketParser方法在循环外处理Queue会更好。是否可以在数据包进入时将数据包添加到Queue中,然后让应用程序的另一部分在项目进入队列时监听项目并执行其他操作,因为原始while循环保持监听数据包并将它们添加到队列中?我想让另一个函数监视队列并处理数据包,Java中是否有一些东西可以监视Queue或Stack?有更好的方法吗?publicvoidread(StringmulticastIpAddress

java - Java中用于处理任务的并发和可扩展数据结构?

对于我当前的开发,我有许多创建Tasks的线程(Producers)和许多使用这些Tasks的线程(消费者)每个Producer都由一个唯一的名称标识;Tasks由以下部分组成:其生产者的名称一个名字数据我的问题涉及(生产者)和(消费者)使用的数据结构。并发队列?天真地,我们可以想象Producer用Tasks填充一个并发队列,然后(consumers)读取/消费Tasks存储在并发队列中。我认为这个解决方案更适合扩展,但有一个案例是有问题的:如果Producers非常快速地创建两个名称相同但数据不同的Tasks(任务T1和T2同名但T1有数据D1,T2有数据D2),理论上有可能按照T